package ovm.gui.views.administration.users;

import com.vaadin.ui.*;
import ovm.management.users.UserRules;
import ovm.gui.views.AbstractView;

import static ovm.application.MainApplication.*;
import static ovm.management.administration.users.UsersManager.*;

public class ChangeUserView extends AbstractView {

    private TextField loginText;
    private TextField passwordText;
    private OptionGroup userRuleSelect;
    private Button changeUserButton;

    public ChangeUserView (String login) {
        super();
        setCaption("Изменение пользователя");
        loginText = new TextField("Введите логин пользователя");
        loginText.setValue(login);
        passwordText = new TextField("Введите новый пароль пользователя");
        userRuleSelect = new OptionGroup("Выберите новую роль пользователя");
        userRuleSelect.removeAllItems();
        userRuleSelect.addItem(UserRules.STUDENT);
        userRuleSelect.setItemCaption(UserRules.STUDENT, "Студент");
        userRuleSelect.addItem(UserRules.TEACHER);
        userRuleSelect.setItemCaption(UserRules.TEACHER, "Сотрудник");
        userRuleSelect.addItem(UserRules.ADMIN);
        userRuleSelect.setItemCaption(UserRules.ADMIN, "Админ");
        userRuleSelect.select(UserRules.STUDENT);

        changeUserButton = new Button("Изменить");
        changeUserButton.addListener(new Button.ClickListener() {
            @Override
            public void buttonClick(Button.ClickEvent event) {
                String login = (String) loginText.getValue();
                String password = (String) passwordText.getValue();
                Integer rule = (Integer) userRuleSelect.getValue();

                if (findUserEntry(login) == UNSUCCESSFUL) {
                    navigator.showNotification("Пользователя с таким логином не существует");
                } else {
                    if (changeUser(getUserByLogin(login), password, rule) == SUCCESSFUL) {
                        navigator.showNotification("Пользователь успешно изменен");
                    } else {
                        navigator.showNotification("Произошла ошибка");
                    }
                }

                //loginText.setValue("");
                //passwordText.setValue("");
            }
        });

        addComponent(loginText);
        addComponent(passwordText);
        addComponent(userRuleSelect);
        addComponent(changeUserButton);
    }

}
